import { Entity, Column, Index } from "typeorm";
import { BaseEntity } from "@/common/entities/base.entity";

/**
 * 页面访问实体
 * 用于存储用户页面访问记录，包含用户访问页面的详细信息
 */
@Entity("page_visits")
export class PageVisitEntity extends BaseEntity {
  /**
   * 用户ID
   * 访问页面的用户唯一标识，可为空表示未登录用户
   */
  @Column({ type: "varchar", length: 64, nullable: true, comment: "用户ID" })
  @Index("idx_user_id")
  userId: string;

  /**
   * 页面URL
   * 用户访问的完整页面地址
   */
  @Column({ type: "varchar", length: 500, comment: "页面URL" })
  @Index("idx_page_url")
  pageUrl: string;

  /**
   * 页面标题
   * 访问页面的标题文本
   */
  @Column({ type: "varchar", length: 200, nullable: true, comment: "页面标题" })
  pageTitle: string;

  /**
   * 来源页面
   * 用户从哪个页面跳转到当前页面，用于分析流量来源
   */
  @Column({ type: "varchar", length: 500, nullable: true, comment: "来源页面URL" })
  referrer: string;

  /**
   * 浏览器类型
   * 用户使用的浏览器名称和版本，如：Chrome/91.0.4472.124
   */
  @Column({ type: "varchar", length: 100, nullable: true, comment: "浏览器类型" })
  browser: string;

  /**
   * 操作系统
   * 用户设备的操作系统信息，如：Windows 10, macOS 11.2.3
   */
  @Column({ type: "varchar", length: 100, nullable: true, comment: "操作系统" })
  os: string;

  /**
   * IP地址
   * 用户的IP地址，用于地理位置分析
   */
  @Column({ type: "varchar", length: 45, nullable: true, comment: "IP地址" })
  ipAddress: string;

  /**
   * 用户代理字符串
   * 完整的User-Agent字符串，包含设备、浏览器、操作系统等详细信息
   */
  @Column({ type: "text", nullable: true, comment: "用户代理字符串" })
  userAgent: string;

  /**
   * 访问时间
   * 用户实际访问页面的时间
   */
  @Column({ type: "datetime", comment: "访问时间" })
  visitTime: Date;
}